\documentclass{bsys}

\begin{document}

\maketitle{4}{05.01.2008}{Kirsten}{7}
          {Tchando Kongue}{Eric Gomdjim Kuitche}{Tchambo Frantz}{Mba Nouga}

\section{Nicht-pr"aemptives priorisiertes User-Space Scheduling}
Implementierung der Scheduler-Bibliothek.
\subsection*{Header File}
Hier wird alle Methoden und alle Dazu ben"otigten Datenstruktur definiert.

Dies Struktur \verb chedContext  ist eine Collection von Daten eines Thread, der enth"alt auch Zeiger auf die n"achste und vorherige \verb chedContext  in der Ringliste.

Die Struktur \verb listRingContext  repr"asentiert die RingListe.
\input{../code/scheduler.h}

\subsection*{Code}
Implementierung den definierten Funktionnen.

\input{../code/scheduler.c}

\section{Ringpuffer mit Threads und Scheduling}
\subsection*{Header-File}
Definition der Routine von jeder Thread und der Signalhandler.

\input{../code/threads.h}
\subsection*{Code}
Implementierung

Die oben deklarierte Mehoden sind hier implementiert. Dazu zwei weitere hilfe Funktionnen, die das Leseroutine und das Schreiberoutine jeder Thread ausf"uhren,  sind implementiert.

\input{../code/threads.c}
\subsection*{Test}

Starten das Programm \verb"threads" mit die Priorit"at jeder Thread als Parameter.

\textbf{test1}

 der Erste Thread liest aus der Konsole eine Datei deren L"ange gro"ser als der Ringpuffer. 
\begin{verbatim}
./threads
        Alle Threads haben die gleiche Prioritaet = 0

---neue Runde---
ched: thread T1
ched: thread T4
ched: thread T3
ched: thread T2
----------------

---neue Runde---
ched: thread T1
dfadsf 			<--input
Felher in Threads1	<-- len(input) > len(ringpuffer)

        Finish
\end{verbatim}

\textbf{test2}

Das Aufruf von \verb"threads" mit den Parameter \verb"0 1 0 2" kann folgende Ergebnisse geben:
\begin{verbatim}
./threads 0 1 0 2
        p1 = 0, p2 = 1, p3 = 0, p4 = 2

---neue Runde---
ched: thread T1
ched: thread T3
----------------

---neue Runde---
ched: thread T1
dfdf		<-- 1input
T1 write: dfdf
ched: thread T3
ched: thread T2
T2 read: dfdf	<-- T2 liest
T2 write: DFDF
----------------

---neue Runde---
ched: thread T1
ched: thread T4
ched: thread T3
T3 read: DFDF	<-- T3 liest
T3 write: DFDF
----------------

---neue Runde---
ched: thread T1
dafched: thread T3
ched: thread T2
----------------

---neue Runde---
ched: thread T1

T1 write: daf	<--2 input
ched: thread T3
----------------

---neue Runde---
ched: thread T1
ched: thread T4
T4 read: DFDF	<-- T4 bekommt erste Input
ched: thread T3
ched: thread T2	
T2 read: daf	<-- T2 least 2 Input
T2 write: DAF
----------------

---neue Runde---
ched: thread T1
dggsgched: thread T3
T3 read: DAF	<-- T3 bekommt 2Input
T3 write:  AF
----------------

---neue Runde---
ched: thread T1

T1 write: dggsg	<-- T1, 3Input
ched: thread T3
ched: thread T2
T2 read: dggsg	<-- T2, liest 3Input
T2 write: DGGSG
----------------
		<-- so weiter ...
---neue Runde---
ched: thread T1
ched: thread T4
T4 read:  AF
ched: thread T3
T3 read: DGGSG
T3 write:  GGSG
----------------
		
---neue Runde---
ched: thread T1	<-- nichts in diesem Runde
ched: thread T3	<-- weil nur T4 musst lesen
ched: thread T2
----------------

---neue Runde---
ched: thread T1
ched: thread T3
----------------

---neue Runde---
ched: thread T1
ched: thread T4
T4 read:  GGSG	<-- T4 liest
ched: thread T3
ched: thread T2
----------------

        Finish	<--- Interrupt
\end{verbatim}

\end{document}
